/*
 *   Copyright (C) 2009  Jens Kieselbach
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You may obtain a copy of the License at http://www.gnu.org/licenses/gpl.html
 */
package de.kieselbach.grootional.component

import java.awt.BorderLayout

abstract class MainFrameCard extends Card {

    def mainFrame
    def uiResources
    def resourceBundle

    MainFrameCard(def mainframe) {

        super(new BorderLayout())

        mainFrame = mainframe
        uiResources = mainframe.uiResources
        resourceBundle = uiResources.resourceBundles['gui']
    }

    void writeToXml(def markupbuilder) {

        markupbuilder.card(type: this.getClass().getName(), title: title) {
            markupbuilder.content() {
                writeContentToXml(markupbuilder)
            }
        }
    }

    static def readFromXml(def cardnode, def mainframe) {

        def card = Class.forName(cardnode.'@type').newInstance(mainframe)
        card.title = cardnode.'@title'

        def content = cardnode.'content'
        if(content != null) {
            card.readContentFromXml(content)
        }

        card
    }

    abstract void writeContentToXml(def markupbuilder)

    abstract void readContentFromXml(def contentnode)
}